package utils

import (
	rotatelogs "github.com/lestrrat-go/file-rotatelogs"
	"github.com/sirupsen/logrus"
	"time"
)

func InitLogger() *logrus.Logger {
	logPath := "./logs/log"

	/* 日志轮转相关函数
	`WithLinkName` 为最新的日志建立软连接
	`WithRotationTime` 设置日志分割的时间，隔多久分割一次
	WithMaxAge 和 WithRotationCount二者只能设置一个
	  `WithMaxAge` 设置文件清理前的最长保存时间
	  `WithRotationCount` 设置文件清理前最多保存的个数
	*/
	rotateWriter, _ := rotatelogs.New(
		logPath+"_%Y%m%d.log",
		rotatelogs.WithLinkName(logPath),
		// rotatelogs.WithMaxAge(30*24*time.Hour),   // 文件最大保存时间
		rotatelogs.WithRotationTime(time.Hour*24), //日志切割时间间隔
		rotatelogs.WithRotationCount(0),           // 日志保留的最大个数，0 表示不限制
	)

	// 创建 logrus 实例
	logger := logrus.New()

	// 设置输出
	logger.SetOutput(rotateWriter)

	// 设置时间格式
	logger.SetFormatter(&logrus.TextFormatter{
		TimestampFormat: "2006-01-02 15:04:05",
	})

	logger.SetFormatter(&logrus.JSONFormatter{})

	return logger
}
